<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // Promise.resolve() 将现有的对象转换为promise对象,并且是成功状态
        let obj={
            name:'tom'
        }
        let p1=Promise.resolve(obj);
        console.log(p1);

        p1.then((res)=>{
            console.log(res); //obj对象
        })

        let p2=Promise.resolve('ysn');
        console.log(p2);

        p2.then((res)=>{
            console.log(res);
        })
        // ----------------------------------
        // thenable对象 特殊现象
        let nihao ={
            then(resolve,reject){
                resolve('nihao');
            }
        }
        let p3=Promise.resolve(nihao);
        console.log(p3);
        p3.then((res)=>{
            console.log(res); //ysn这个对象但是不说
        })

        let p4=Promise.resolve();
        p4.then((res)=>{
            console.log('什么都不传 什么都不接受了,执行该函数的逻辑即可');
        })

        // Promise.reject() 返回promise实例对象 但是是失败状态
        // let p5 =Promise.reject('出错了');
        // p5.catch((err)=>{
        //     console.log(err);  //出错了
        // })

        // let p6=Promise.reject({err:'出错了'});
        // p6.catch((err)=>{
        //     console.log('出错了')  //出错了
        // })
        // let hh={
        //     catch(resolve,reject){
        //         reject('出错了')
        //     }
        // }
        // let xx={
        //     then(resolve,reject){
        //         reject('出错了!!');
        //     }
        // }

        // let p7=Promise.reject(xx);
        // p7.catch((err)=>{
        //     console.log(err);
        // })

        // promise.all()用于将多个promise对象,包装成一个新的promise,以数组的形式传递给promise.all([])
        // 的promise实例都是成功状态,新形成的promise对象是成功的状态
        // 中有一个失败状态,则就是失败状态,有多个失败状态,返回第一个的值

        let p8=new Promise((resolve,reject)=>{
            if(true){
                resolve('成功')
            }else{
                reject('失败')
            }
        })

        // let p9=new Promise((resolve,reject)=>{
        //     if(false){
        //         resolve('成功')
        //     }else{
        //         reject('失败')
        //     }
        // })
        let p_all=Promise.all([p1,p2,p3,p4,p8]);
        console.log(p_all);
        p_all.then(data=>{
            console.log(data);
        }).catch(err=>{
            console.log(err);
        })
    </script>
</body>
</html>